/**
 * 
 */
package br.idez.idezJet.negocio.service;

import java.util.Collection;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.persistence.OptimisticLockException;

import br.idez.idezJet.integracao.dao.ItemPedidoDAO;
import br.idez.idezJet.integracao.vo.ItemPedido;

/**
 * @author Moacir Junior
 * 
 */
@Stateless
@Remote(ItemPedidoService.class)
public class ItemPedidoServiceImpl implements ItemPedidoService {

	@EJB
	private ItemPedidoDAO itemPedidoDAO;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.negocio.service.IdezJetService#incluir(java.lang.Object)
	 */
	@Override
	public void incluir(ItemPedido o) throws Exception {
		itemPedidoDAO.incluir(o);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.negocio.service.IdezJetService#alterar(java.lang.Object)
	 */
	@Override
	public void alterar(ItemPedido o) throws Exception {
		try{
			itemPedidoDAO.alterar(o);
		}catch(OptimisticLockException ex){
			ItemPedido item = itemPedidoDAO.consultar(o);
			this.alterar(item);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.negocio.service.IdezJetService#consultar(java.lang.Object
	 * )
	 */
	@Override
	public ItemPedido consultar(ItemPedido o) throws Exception {
		return itemPedidoDAO.consultar(o);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see br.idez.idezJet.negocio.service.IdezJetService#listar()
	 */
	@Override
	public Collection<ItemPedido> listar() throws Exception {
		return itemPedidoDAO.listar();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.negocio.service.IdezJetService#listar(java.lang.Object)
	 */
	@Override
	public Collection<ItemPedido> listar(ItemPedido o) throws Exception {
		return itemPedidoDAO.listar(o);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * br.idez.idezJet.negocio.service.IdezJetService#excluir(java.lang.Object)
	 */
	@Override
	public void excluir(ItemPedido o) throws Exception {
		try{
			itemPedidoDAO.excluir(o);
		}catch(OptimisticLockException ex){
			ItemPedido item = itemPedidoDAO.consultar(o);
			this.excluir(item);
		}
	}

}
